 lexer grammar Analex;

options {
  language = Java;
}
 
@header {
package PL.prac3;
}
 @rulecatch { catch (RecognitionException e) {
  throw e;}
  }

fragment LETRA : ('a'..'z')|'_'; 
fragment DIGITO : '0'..'9'; 
fragment ESPACIO: (' ');
fragment ACEPTA: ('TRUE'|'FALSE');
fragment BARRA: ('/');
fragment COMILLAS: ('"');
fragment INSTRUCCION: ('SET');

BLANCO: (' '|'\t'|'\r'|'\n') {$channel = HIDDEN;}; 
SEPARADOR: ';';
OPERADOR: '='; 
OPCION: ('IF');
OP_PARENTESIS: ('(');
CL_PARENTESIS: (')');
OP_LLAVE: ('{');
CL_LLAVE: ('}');
DOLAR: ('$');
SETFOR: ('FOR');
SETWHILE: ('WHILE');

NUMERO : (DIGITO)+; 
IDENT : LETRA(LETRA|DIGITO)*;  
BOOLEANO: ACEPTA;
DIRECTORIO: (BARRA IDENT)*; 
CADENA: COMILLAS (LETRA|DIGITO|' ')* COMILLAS;
VARIABLE: DOLAR IDENT;
SET_VAR: INSTRUCCION ESPACIO DOLAR IDENT;
